I2C (Inter-Integrated Circuit) একটি যোগাযোগ প্রোটোকল যা একাধিক ডিভাইসের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। I2C প্রোটোকল সাধারণত দুইটি পিন ব্যবহার করে: SDA (Data Line) এবং SCL (Clock Line)।
I2C প্রোটোকলটি সেন্সর, EEPROM, LCD এবং অন্যান্য ডিভাইসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়।
ধরা যাক, আমরা একটি I2C EEPROM (24C02) ব্যবহার করছি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Arduino একটি EEPROM থেকে ডেটা পড়ে এবং লেখে।
#include <Wire.h> // I2C লাইব্রেরি
#define EEPROM_ADDRESS 0x50 // EEPROM এর I2C ঠিকানা
void setup() {
Wire.begin(); // I2C শুরু
Serial.begin(9600);
}
void loop() {
// EEPROM এ ডেটা লেখা
Wire.beginTransmission(EEPROM_ADDRESS);
Wire.write(0x00); // যে ঠিকানায় লেখার জন্য সেটি
Wire.write("Hello"); // লেখার জন্য ডেটা
Wire.endTransmission();
delay(100);
// EEPROM থেকে ডেটা পড়া
Wire.beginTransmission(EEPROM_ADDRESS);
Wire.write(0x00); // যে ঠিকানায় পড়ার জন্য সেটি
Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDRESS, 5); // 5 বাইট ডেটা পড়া
while (Wire.available()) {
char c = Wire.read(); // ডেটা পড়া
Serial.print(c); // সিরিয়াল মনিটরে প্রিন্ট
}
Serial.println();
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
SPI (Serial Peripheral Interface) একটি উচ্চ গতির সিরিয়াল যোগাযোগ প্রোটোকল যা একটি মাস্টার ডিভাইস এবং এক বা একাধিক স্লেভ ডিভাইসের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। SPI তে সাধারণত চারটি পিন ব্যবহৃত হয়: MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Clock), এবং SS (Slave Select).
SPI সাধারণত SD কার্ড, OLED ডিসপ্লে, ডাটা লগার, এবং অন্যান্য উচ্চ গতির ডিভাইসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়।
এখন আমরা একটি SPI ডিভাইস (যেমন MAX7219 LED ডিসপ্লে ড্রাইভার) ব্যবহার করে একটি উদাহরণ দেখাব।
#include <SPI.h> // SPI লাইব্রেরি
#define CS_PIN 10 // Chip Select পিন
void setup() {
pinMode(CS_PIN, OUTPUT);
SPI.begin(); // SPI শুরু
digitalWrite(CS_PIN, HIGH); // CS পিন উচ্চ রাখুন
}
void loop() {
digitalWrite(CS_PIN, LOW); // Chip Select নিচে
SPI.transfer(0x01); // ডেটা প্রেরণ
SPI.transfer(0xFF); // ডেটা প্রেরণ
digitalWrite(CS_PIN, HIGH); // Chip Select উচ্চ রাখুন
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
I2C এবং SPI উভয়ই Arduino প্রোজেক্টে খুবই জনপ্রিয় যোগাযোগ প্রোটোকল। এগুলো বিভিন্ন ডিভাইসের সাথে দ্রুত এবং কার্যকর যোগাযোগ নিশ্চিত করতে সহায়তা করে।
common.read_more